/*validación de formularios*/

function validar() {

	var res = true;
	var error = "";

	//CAMPEONATO
	error += validaNoVacioCadena("NOMBRE");
	//error += validaNoVacioCadena("PROVINCIA");
	error += validaNoVacioCadena("CIUDAD");
	error += validaNoVacioCadena("DIRECCION");
	error += validaNoVacioCadena("DESCRIPCION");

	//CENTROS
	error += validaNoVacioCadena("NOMBRE_CEN");
	error += validaNoVacioCadena("POBLACION");
	error += validaNoVacioNumero("TELEFONO");
	error += validaNoVacioEmail("EMAIL");
	error += validaNoVacioCadena("CIF");

	//MATERIALES
	error += validaNoVacioCadena("MATERIAL");
	error += validaNoVacioNumero("CANTIDAD");

	//ESCUELAS

	error += validaNoVacioCadena("DEPORTE");

	//PERSONAS
	error += validaNoVacioCadena("APELLIDOS");
	error += validaNoVacioGenero("GENERO");
	error += validaNoVacioNumero("FECHA_NAC");
	//validar dni y cif

	error += validaNoVacioNumero("TELEFONO_FIJO");
	error += validaNoVacioNumero("TELEFONO_MOVIL");

	//PRÉSTAMOS
	error += validaNoVacioFecha("FECHA_EMISION");
	error += validaNoVacioNumero("CANTIDAD");

	if (error.length > 0) {
		res = false;
		mostrarErrores(error);
	}

	return res;
}

//VALIDA CADENA
function validaNoVacioCadena(id) {

	var objeto = document.getElementById(id);

	var error = "";

	if (objeto != null) {

		var valorObj = document.getElementById(id).value;

		//comprobamos que no este vacio
		if (valorObj == "") {
			error += "El campo <b>" + id + "</b> no puede estar vacio</br>";
		} else {
			if (!isNaN(valorObj))
				error += "El campo <b>" + id + "</b> tiene que ser una cadena</br>";
		}
	}

	return error;

}

//VALIDA DNI
function validaNoVacioDni(id) {

	var objeto = document.getElementById(id);

	var error = "";

	if (objeto != null) {
		var valorObj = document.getElementById(id).value;
		//comprobamos que no este vacio
		if (valorObj == "") {
			error += "El campo <b>" + id + "</b> no puede estar vacio</br>";
		} else {
			//el dni tiene 8 o 9 caracteres dependiendo de la antigüedad
			var tamanoDni = valorObj.length;

			if (tamanoDni == 8 || tamanoDni == 9){

				var cifrasDni = valorObj.slice(0, tamanoDni - 1);

				var letra = valorObj.charAt(tamanoDni - 1).toUpperCase();

				var letraVerificada = letraDni(cifrasDni).toUpperCase();

				if(letraVerificada!=letra) error+= "El campo <b>"+id+"</b> tiene las cifras mal</br>";


			} else {
				error += "El campo <b>" + id + "</b> tiene tamano superior o inferior a 8-9</br>";
			}
		}
	}

	return error;

}

// devuelve la letra correspondiente a un número DNI
function letraDni(dni) {
	var lockup = 'TRWAGMYFPDXBNJZSQVHLCKE';
	var res=lockup.charAt(dni%23);
	return res;
}

//VALIDA GENERO
function validaNoVacioGenero(id) {

	var objeto = document.getElementById(id);

	var error = "";

	if (objeto != null) {

		var valorObj = document.getElementById(id).value;

		//comprobamos que no este vacio
		if (valorObj == "") {
			error += "El campo <b>" + id + "</b> no puede estar vacio</br>";
		} else {
			if (!isNaN(valorObj)) {
				error += "El campo <b>" + id + "</b> tiene que ser un caracter</br>";
			} else {
				if (valorObj != "M" || valorObj != "F") {
					error += "El campo <b>" + id + "</b> tiene que ser 'M' o 'F'</br>";
				}
			}
		}
	}

	return error;

}

//VALIDA NUMERO
function validaNoVacioNumero(id) {

	var objeto = document.getElementById(id);

	var error = "";

	if (objeto != null) {

		var valorObj = document.getElementById(id).value;

		//comprobamos que no este vacio
		if (valorObj == "") {
			error += "El campo <b>" + id + "</b> no puede estar vacio</br>";
		} else {

			if (!isNaN(valorObj)){
				if(valorObj<=0) error+="El campo <b>"+id+" </b> tiene que ser positivo</br>";
			}else{
				error += "El campo <b>" + id + "</b> tienen que ser números</br>";
			}
		}
	}

	return error;

}

//VALIDA EMAIL
function validaNoVacioEmail(id) {

	var objeto = document.getElementById(id);

	var error = "";

	//expresion regular para el formato del email
	var expRegFormato = new RegExp(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/);

	if (objeto != null) {

		var valorObj = document.getElementById(id).value;

		//comprobamos que no este vacio
		if (valorObj == "") {
			error += "El campo <b>" + id + "</b> no puede estar vacio</br>";
		} else {
			if (!expRegFormato.test(valorObj)) {
				error += "El campo <b>" + id + "</b> debe tener el siguiente formato ej: usuario@dominio.com ";
			}
		}
	}
	return error;

}

//VALIDA FECHA
//esta funcion valida si un campo existe y si esta vacio
function validaNoVacioFecha(id) {

	var objeto = document.getElementById(id);

	var error = "";

	var expRegFormato = new RegExp(/^(\d{2})([/])(\d{2})([/])(\d{2})$/);
	//expresion regular para formato de fecha

	if (objeto != null) {
		var valorObj = document.getElementById(id).value;

		//comprobamos que no este vacio
		if (valorObj == "") {
			error += "El campo <b>" + id + "</b> no puede estar vacio</br>";
		} else {
			if (!expRegFormato.test(valorObj)) {
				error += "El campo <b>" + id + "</b> debe tener el siguiente formato dd/mm/aa</br>";
			} else {
				var array = valorObj.split("/");

				if (array.length == 3) { 

					if (!(array[0] >= 1 && array[0] <= 31)) {
						error += "Los días de <b>" + id + "</b> deben estar entre 1 y 31 </br>";
					}

					if (!(array[1] >= 1 && array[1] <= 12)) {
						error += "Los meses de <b>" + id + "</b> deben estar entre 1 y 12 </br>";
					}

					if (!(array[2] >= 1 && array[2] <= 99)) {
						error += "Los años de <b>" + id + "</b> deben estar entre 0 y 99 </br>";
					}
				}
			}
		}
	}
	return error;

}


// Esta función cambia inserta en el divModificar los errores y le cambia el nombre de clase para cambiar su estilo
function mostrarErrores(error) {

	var divError = document.getElementById("divModificar");
	divError.innerHTML = error;
	divError.className = 'error';

}